package basic.study.algorithms.solution;

import java.util.ArrayDeque;

/**
 * @author Kevin
 * @date 2020/2/13 2:57
 * 我手中有一堆扑克牌， 但是观众不知道它的顺序。
 *
 * 第一步， 我从牌顶拿出一张牌， 放到桌子上。
 *
 * 第二步， 我从牌顶再拿一张牌， 放在手上牌的底部。
 *
 * 第三步， 重复第一/二步的操作， 直到我手中所有的牌都放到了桌子上。
 *
 * 最后， 观众可以看到桌子上牌的顺序是：13\12\11\10\9\8\7\6\5\4\3\2\1 请问， 我刚开始拿在手里的牌的顺序是什么？
 * ————————————————
 * 版权声明：本文为CSDN博主「下雨了_简」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。
 * 原文链接：https://blog.csdn.net/zhangjingao/article/details/97176702
 */
public class DiGUI_poker {
    public static void main(String[] args) {
        int[] arr = {13, 12, 11, 10, 9,8,7,6,5,4,3,2,1};
        ArrayDeque<Integer> deque = new ArrayDeque<>();
        deque.addFirst(arr[0]);
        int index = 1;
        work(deque, arr, index);

        while(!deque.isEmpty()) {
            System.out.println(deque.pop());
        }
    }

    private static void work(ArrayDeque<Integer> deque, int[] arr, int index) {
        if(index > 12) {
            return ;
        }
        //每次往首部添加，添加一次将尾部提到前面
        deque.addFirst(arr[index]);
        index++;
        int temp = deque.pollLast();
        deque.addFirst(temp);
        work(deque, arr, index);
    }
}
